import { filterObjEmptyItem, generateRowKey } from '@/utils'

export default {
  data() {
    return {
      // 表格数据
      tableData: [],
      // 分页数据
      pageInfo: {},
      // 当前操作的数据
      currentRow: {},
      // 当前的搜索条件，已经执行过的
      currentCondition: {}
    }
  },
  computed: {},
  methods: {
    // 分页变化
    async pagerChange(pager) {
      await this.getData(pager)
      // delete this.currentCondition.pageNum
      // delete this.currentCondition.pageSize
      // const isSame = Object.keys(this.currentCondition).every(key => {
      //   return this.currentCondition[key] === this.searchParams[key]
      // })
      // if (!isSame) {
      //   // 如果不同，表示用户修改了查询条件但是没搜索,先主动查询一次获取条数，算总页码，在和当前页码作比较
      //   const res = await this.getListApi({
      //     ...this.searchParams,
      //     pageNum: 1
      //   })
      //   const pageIndex = Math.ceil(+res.totalSize / pager.pageSize)
      //   await this.getData({
      //     ...pager,
      //     pageNum: pageIndex < pager.pageNum ? pageIndex : pager.pageNum
      //   })
      // } else {
      //   await this.getData(pager)
      // }
    },
    // 获取列表数据
    async getData(params = {}) {
      const searchParams = {
        ...this.pageInfo,
        ...this.searchParams,
        ...params
      }
      delete searchParams.totalSize
      // this.currentCondition = searchParams
      // eslint-disable-next-line no-async-promise-executor
      return new Promise(async(resolve) => {
        const res = await this.getListApi(filterObjEmptyItem(searchParams))
        if (res.success) {
          this.tableData = (res.data || []).map(item => {
            return {
              ...item,
              row_key: generateRowKey()
            }
          })
          this.pageInfo = {
            pageNum: +res.pageNum, // 当前页码
            pageSize: +res.pageSize, // 分页数量
            totalSize: +res.totalSize // 数据总数
          }
          this.searchParams = {
            ...this.searchParams,
            ...this.pageInfo
          }
          resolve(res.data || [])
        }
      })
    }
  }
}
